package com.jml.mapreduce.自定义使用inputFormat;

import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import java.io.IOException;

/**
 * ● 需求：
 *   ○ 多个小文件合并成一个SequenceFile文件
 *     ■ SequenceFile文件是Hadoop用来存储二进制形式的key-value对的文件格式
 *     ■ 就是Hadoop序列化写出的文件就叫序列化文件，是二进制文件。
 *   ○ SequenceFile里面存储多个文件，存储的形式为文件路径+名称key，文件内容是value
 *
 * 泛型就是我们要输出的kv，key就是String，value就是字节数组（因为最终是二进制文件）
 */
public class MyInputFormat extends FileInputFormat<Text, BytesWritable> {

    @Override
    public RecordReader<Text, BytesWritable> createRecordReader(InputSplit inputSplit, TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
        RecordReader<Text, BytesWritable> recordReader= new MyRecordReader();
        return recordReader;
    }
}
